package com.ssy.lingxi.transaction.entity;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.ssy.lingxi.transaction.api.dto.request.EnclosureUrlsRequest;
import com.ssy.lingxi.transaction.handler.converter.JpaJsonToEnclosureUrlsRequestListConverter;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.List;

/**
 * 询价单
 * @author wrc
 * @date 2020/7/21
 */
@Getter
@Setter
@Entity
@Table(schema = "public", name = "trade_inquiry")
public class Inquiry {
    @Id
    @GeneratedValue(strategy= GenerationType.SEQUENCE,generator="inquiry_seq")
    @SequenceGenerator(sequenceName="trade_inquiry_seq", name="inquiry_seq",allocationSize = 1)
    private Long id;

    /**
    *询价单编号
    */
    private String inquiryListNo;

    /**
     * 询价单摘要
     */
    private String details;

    /**
     * 询价联系人id
     */
    private Long contactId;

    /**
     * 询价联系人姓名
     */
    private String contactName;

    /**
     * 询价联系人电话国标码
     */
    private String phoneCode;

    /**
     * 询价联系人电话
     */
    private String contactPhone;

    /**
     * 被询价会员id
     */
    private Long memberId;

    /**
     * 被询价会员名称
     */
    private String memberName;

    /**
     * 被询价会员角色id
     */
    private Long memberRoleId;

    /**
     * 被询价会员角色名称
     */
    private String memberRoleName;

    /**
     * 交付日期
     */
    private Long deliveryTime;

    /**
     * 报价截止时间
     */
    private Long quotationAsTime;

    /**
     * 单据时间
     */
    private Long voucherTime;

    /**
    * 外部状态
    */
    private Integer externalState;

    /**
     * 内部状态
     */
    private Integer interiorState;

    /**
     * 外部工作流流程taskId
     */
    private String externalTaskId;

    /**
     * 内部工作流流程taskId
     */
    private String interiorTaskId;

    /**
     * 报价要求
     */
    private String offer;

    /**
     * 付款方式
     */
    private String paymentType;

    /**
     * 税费要求
     */
    private String taxes;

    /**
     * 物流要求
     */
    private String logistics;

    /**
     * 包装要求
     */
    private String packRequire;

    /**
     * 其他要求
     */
    private String otherRequire;

    /**
     * 创建时间
     */
    private Long createTime;

    /**
     * 更新时间
     */
    private Long updateTime;

    /**
     * 创建会员ID
     */
    private Long createMemberId;

    /**
     * 创建会员名字
     */
    private String createMemberName;

    /**
     * 创建人会员角色ID
     */
    private Long createRoleId;

    /**
     * 创建人会员角色名称
     */
    private String createRoleName;

    /**
     * 用户id(询价方)
     */
    private Long userId;

    /**
     * 用户名称(询价方)
     */
    private String userName;

    /**
     * 用户id(报价方)
     */
    private Long quoteUserId;

    /**
     * 用户名称(报价方)
     */
    private String quoteUserName;

    /**
     * 附件链接集合
     */
    @Column(columnDefinition = "jsonb")
    @Convert(converter = JpaJsonToEnclosureUrlsRequestListConverter.class)
    private List<EnclosureUrlsRequest> enclosureUrls;

    /**
     * 交付地址详情
     */
    private String fullAddress;

    /**
     * 交付地址ID
     */
    private Long fullAddressId;

    /**
     * 是否已经报价：1.是 0.否
     */
    private Integer isQuoted;

    /**
    * 发货者积分
    */
    private Integer integral;

    /**
    * 商城id
    */
    private Long shopId;

    /**
     * 商品单价和图片
     */
    @JsonManagedReference
    @OneToMany(mappedBy = "inquiry", cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, fetch = FetchType.EAGER)
    private List<InquiryProduct> inquiryProductList;

    /**
    * 是否可以二次询价: 空-不显示二次询价; true-显示二次询价,并且可以询价; false-显示二次询价,不能进行询价
    */
    private Boolean isSecondInquiry;
}
